
/**
 * @description: 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
 * 如果反转后整数超过 32 位的有符号整数的范围[−2^31, 2^31−1] ，就返回 0。
 * 假设环境不允许存储 64 位整数（有符号或无符号）。
 * @author: 啸
 * @email: zhang_6379@sina.com
 * @date: 2021/11/1 19:58
 */
public class leecode_question03 {
    public static void main(String[] args) {
        leecode_question03 lee = new leecode_question03();
        int i = lee.reverse01(-2147483412);
        System.out.println(i);

    }

    //方法一：
    int reverse01(int num) {
        //int的取值范围是 -2147483648 ~ 2147483647
        int ret = 0;
        while (num != 0) {
            int tmp = num % 10;

            if(ret > 214748364 || (ret == 21748364 && tmp > 7)) return 0;
            if(ret < -214748364 ||(ret == -21748364 && tmp < -8)) return 0;

            ret = ret * 10 + tmp;
            num /= 10;
        }
        return ret;
    }

    //数字反转的方法之一:求模(就是拿到数字的最后一位)
    void reverse(int num) {
        while (num != 0) {
            int tmp = num % 10;
            num = num / 10; //因为 num是int类型的，所以 22 % 10 = 2 ，而不是 2.2！！！ 所以会出现为0。
            System.out.print(tmp);
        }
    }

}
